Entonces, quería agregar otra aplicación de Firebase al proyecto. Ya tenía uno para SSR (firebase-admin), por lo que el servidor podía renderizar previamente los sitios. Ahora quiero agregar firebase @ 8, para poder comenzar a usarlo en el lado del cliente y luego aplicarle reglas de firestore. El problema es que cuando trato de usarlo me sale este error:
/node_modules/@google-cloud/storage/build/src/bucket.js:22:0 Module not found: Can't resolve 'fs' Import trace for requested module: ./node_modules/@google-cloud/storage/build/src/index.js ./node_modules/firebase-admin/lib/storage/storage.js ./node_modules/firebase-admin/lib/app/firebase-namespace.js ./node_modules/firebase-admin/lib/default-namespace.js ./node_modules/firebase-admin/lib/index.js ./firebase/config.js ./firebase/createDocument.js ./components/form/Form.js ./pages/opinia/index.js https://nextjs.org/docs/messages/module-not-foundAquí está mi archivo de configuración:
import * as admin from 'firebase-admin'; import firebase from 'firebase'; import 'firebase/firestore'; // initialize firebase on CLIENT const firebaseConfig = { apiKey: process.env.FIREBASE_KEY, authDomain: process.env.FIREBASE_DOMAIN, projectId: process.env.FIREBASE_ID, storageBucket: process.env.FIREBASE_STORAGE_BUCKET, messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID, appId: process.env.APP_ID, }; export const clientApp = initializeApp(firebaseConfig); // firestore export const projectFirestoreClient = firebase.firestore(clientApp); // timestamp export const timestampClient = firebase.firestore.Timestamp; // initialize firebase on SERVER if (!admin.apps.length) { const serviceAccount = require('./firebase-adminsdk.json'); admin.initializeApp({ credential: admin.credential.cert(serviceAccount), }); } // firestore export const projectFirestoreAdmin = admin.firestore(); // timestamp export const timestampAdmin = admin.firestore.Timestamp;Entonces, mi pregunta es, ¿cómo soluciono este error? ¿Y qué lo está causando? Gracias por adelantado.
Firebase Admin no está diseñado para usarse en el lado del cliente. Cuando ejecuta la aplicación, Firebase Admin también se importa y provoca ese error. Idealmente, debe inicializar Firebase Admin en un archivo diferente al que solo se pueda acceder desde el lado del servidor.
Consulte este blog para obtener una explicación paso a paso sobre cómo usar Firebase Admin con NextJS.